###User Defined Function###
_WinAPI_CreateSemaphore

###Description###
Erzeugt oder öffnet ein benanntes oder unbenanntes Semaphore-Objekt.

###Syntax###
#include <WinAPIProc.au3>
_WinAPI_CreateSemaphore ( $sSemaphore, $iInitial, $iMaximum [, $tSecurity = 0] )

###Parameters###
@@ParamTable@@
$sSemaphore
	Der Name des zu öffnenden Semaphores. Die Groß-/ Kleinschreibung wird bei dem Namensvergleich beachtet.
$iInitial
	Der ursprüngliche Zähler des Semaphore-Objektes. Dieser Wert muss größer oder gleich 0 sein oder weniger oder gleich $iMaximum.
$iMaximum
	Das Maximum des Zählers für das Semaphore-Objekt. Dieser Wert muss größer als 0 sein.
$tSecurity
	[optional] Die $tagSECURITY_ATTRIBUTES Struktur welches den Sicherheitsdeskriptor für das neue Semaphore-Objekt angibt.
	Wenn dieser Parameter 0 ist (Standard), dann erhält das Semaphore-Objekt einen Standardsicherheitsdeskriptor.
@@End@@

###ReturnValue###
@@ReturnTable@@
Erfolg:	Das Handle des neu erstellen Semaphore-Objektes.
Fehler:	0, erweiterte Fehlerinformationen bekommt man durch den Aufruf der <a href="_WinAPI_GetLastError.htm">_WinAPI_GetLastError()</a> Funktion.
@@End@@

###Remarks###
Wenn das benannte Semaphore-Objekt vor dem Funktionsaufruf existiert, so gibt die Funktion das Handle zum bereits existierenden Objekt zurück.

Jeder Prozess kann das Semaphore-Objekt Handle in einem Aufruf der _WinAPI_WaitFor... Funktionen angeben. Die Einzel-Objekt-Wartefunktionen beenden sich wenn der Status des angegebenen Objektes signalisiert werden. Die Mehrere-Objekt-Wartefunktionen können entweder sich beenden wenn eine oder alle der angegebenen Objekte signalisiertwerden. Wenn eine Wartefunktion sich beednet, so wird der wartende Prozess freigegeben um seine Ausführung fortzusetzen.

Der Status des Semaphore-Objektes wird signalisiert wernn der Zähler größer als 0 oder nicht signalisiert wenn der Zähler gleich 0 ist.
Der $iInitial Parameter gibt den ursprünglichen Zählerwert an. Jedes mal wenn ein wartender Prozess aufgrund eines signalisierten Zustandes eines Semaphores freigegeben wird, wird der Zähler des Semaphore-Objektes um eins verringert.
Mit der <a href="_WinAPI_ReleaseSemaphore.htm">_WinAPI_ReleaseSemaphore()</a> Funktion kann man den Zähler des Semaphores um eine bestimmte Anzahl erhöhen.
Der Zähler kann nie kleiner als 0 oder größer als der angegebene $iMaximum Parameter sein.

Mit der <a href="_WinAPI_CloseHandle.htm">_WinAPI_CloseHandle()</a> Funktion kann man das Handle schließen. Das System schließt das Handle automatisch wenn der Prozess terminiert. Das Semaphore-Objekt wird zerstört wenn der letzte Handle geschlossen wird.

###Related###
_WinAPI_CloseHandle, _WinAPI_ReleaseSemaphore

###See Also###
@@MsdnLink@@ CreateSemaphore

###Example###
@@IncludeExample@@
